import {Observer} from "@/utils/observer/Observer";

/**
 * 统一消息入口
 * 消息观察者 -- 诊室屏
 */
class RoomObserverMsg extends Observer{
  constructor(self) {
    super();
    
    // 外部组件
    this.catcheInfo = self;
  }

  /**
   * 消息监听入口
   * @param bizType
   * @param msgContent
   */
  update(bizType,msgContent) {

    // 在这里显示监听的消息
    if (this[bizType]){
      this[bizType](msgContent);
    }
  }

  /**
   * 获取诊室屏业务实现类
   * @returns {*|null}
   */
  execute(methodName,obj,...object){
    let roomItem = this.catcheInfo.modelMap["room-DRC"];
    if (roomItem==null){
      return;
    }
    // 存在才会执行
    if (this.catcheInfo.commonJsonMap[roomItem.id][methodName]){
      this.catcheInfo.commonJsonMap[roomItem.id][methodName](obj,...object);
    }
  }

  /**
   * 暂停
   * @param obj
   */
  loadViewData(obj) {
    this.execute('roomSetDataListWidthFullData',obj)
  }


  /**
   * 暂停
   * @param obj
   */
  pauseDoctor(obj) {
    this.execute('pauseOrCancel',obj,true)
  }

  /**
   * 取消暂停
   * @param obj
   */
  cancelPause(obj) {
    this.execute('pauseOrCancel',obj,false)
  }

  /**
   * 医生登录
   * @param obj
   */
  doctorLogin(obj) {
    this.execute('doctorLogin',obj)
  }

  /**
   * 医生退出
   * @param obj
   */
  doctorLogout(obj) {
    this.execute('doctorLogout',obj)
  }

  /**
   * 刷新消息
   * @param obj
   */
  refreshMsg(obj) {
    this.execute('refreshMsg',obj)
  }

  /**
   * 顺呼/选呼/过号/诊结
   * @param obj
   */
  updateWaitScreenDoctors(obj) {
    this.execute('updateWaitScreenDoctors',obj)
  }

  /**
   * 打开弹窗
   * @param obj
   */
  openMsgWin(obj) {
    this.execute('openMsgWin',obj)
  }

  /**
   * 关闭弹窗
   * @param obj
   */
  closeMsgWin(obj) {
    this.execute('closeMsgWin',obj)
  }

  /**
   * 模板更新
   * @param obj
   * @constructor
   */
  UPDATE_TEMPLATE(obj) {
    this.execute('UPDATE_TEMPLATE',obj)
  }

  /**
   * 显示设备信息
   * @param obj
   * @constructor
   */
  SHOW_TERMINAL_INFO(obj) {
    this.execute('SHOW_TERMINAL_INFO',obj)
  }

  /**
   * 刷新消息
   * @param obj
   * @constructor
   */
  Qcss_Refresh_Config_Msg(obj) {
    this.execute('Qcss_Refresh_Config_Msg',obj)
  }

  /**
   * 打印屏上 当前实时数据缓存
   * @param obj
   * @constructor
   */
  GET_TERMINAL_CURRENT_DATA(obj) {
    this.execute('GET_TERMINAL_CURRENT_DATA',obj)
  }

  /**
   * 替换终端上的实时数据
   * @param obj
   * @constructor
   */
  REPLACE_TERMINAL_CURRENT_DATA(obj) {
    this.execute('REPLACE_TERMINAL_CURRENT_DATA',obj)
  }

}
export {RoomObserverMsg}
